package Exception;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * JDK7之后，java提供了新的特性:自动关闭特性
 * 可以在异常处理机制中更优雅的关闭如IO的操作
 * @see exception.FinallyDemo2
 */

public class AutoCloseableDemo {
    public static void main(String[] args) throws IOException {
        /**
           1.选中下边三句代码，即要try的代码，Ctrl+Alt+T,选择try/catch/finally，自动生成
           2.然后把第一句定义流并初始化,手动放到try()括号内
           3.finally部分全部删除，这种方式不需要写finally
           4.fos.close()关流操作也不需要了
           注意：这种语法只是编译器认可，最终编译器会把代码改成同FinallyDemo2的样子
                只有实现了AutoCloseable接口的类，才能写在try()内，流都可以！
         */
        try(
                //在try中定义流，并初始化！
                FileOutputStream fos = new FileOutputStream("fos.dat")
        ) {
            //int d = 1; //像这句初始化就不能放在try()内
            fos.write(1);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
